﻿#pragma once

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

//4.链表节点的数据类型；
struct QueueNode
{
	struct QueueNode* next;
};
//5.链表的数据类型；
struct LQueue
{
	//6.头节点；
	struct QueueNode header;
	int size;
	//7.尾指针，始终指向链表的最后一个节点；
	struct QueueNode* rear;
};
typedef void* LinkQueue;

#ifdef __cplusplus
extern "C" {
#endif

	//8.初始化；
	LinkQueue Init_LinkQueue();
	//9.入队；
	void Push_LinkQueue(LinkQueue queue, void* data);
	//10.出队；
	void Pop_LinkQueue(LinkQueue queue);
	//11.获得队头元素；
	void* Front_LinkQueue(LinkQueue queue);
	//12.获得队尾元素；
	void* Back_LinkQueue(LinkQueue queue);
	//13.大小；
	int Size_LinkQueue(LinkQueue queue);
	//14.销毁队列；
	void Destroy_LinkQueue(LinkQueue queue);

#ifdef __cplusplus
}
#endif